package com.zhijian.medical.service;

import com.zhijian.entity.PageVo;
import com.zhijian.medical.entity.po.Agentia;
import com.zhijian.medical.entity.vo.request.AgentiaSearchBmVo;
import com.zhijian.medical.entity.vo.request.AgentiaSearchVo;
import com.zhijian.medical.entity.vo.response.AgentiaBmVo;
import com.zhijian.medical.entity.vo.response.AgentiaSimpleVo;
import com.zhijian.medical.entity.vo.response.AgentiaVo;
import com.zhijian.medical.util.Page;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 试剂表 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-01-13 15:33:49
 */
public interface AgentiaService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    Agentia selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    AgentiaVo selectVoById(Long id);

    List<AgentiaBmVo>selectVoByCategoryId(AgentiaSearchBmVo bmVo);

    int countByCategoryId(Long categoryId);

    /**
     * 主键与角色集合查询vo
     *
     * @param roleIds
     * @param id
     * @return
     */
    AgentiaVo selectVoById(List<Long> roleIds, Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 新增
     *
     * @param agentia
     * @return
     */
    Long insert(Agentia agentia);

    /**
     * 更改
     *
     * @param agentia
     * @return
     */
    boolean update(Agentia agentia);

    /**
     * 动态修改
     *
     * @param record
     * @return
     */
    boolean updateByPrimaryKeySelective(Agentia record);

    /**
     * 总数
     *
     * @param agentiaSearchVo
     * @return
     */
    Integer count(AgentiaSearchVo agentiaSearchVo);

    /**
     * 列表
     *
     * @param agentiaSearchVo
     * @return
     */
    List<AgentiaVo> selectList(AgentiaSearchVo agentiaSearchVo);

    /**
     * 分页展示
     *
     * @param agentiaSearchVo
     * @return
     */
    Page<AgentiaVo> selectPage(AgentiaSearchVo agentiaSearchVo);

    /**
     * 出库
     *
     * @param id
     * @param count 出库数目
     * @return
     */
    boolean delivery(Long id, Integer count);

    /**
     * 盘点库存
     *
     * @param id
     * @param stock
     * @return
     */
    boolean checkStock(Long id, Integer stock);

    /**
     * 根据试剂id查询AgentiaSimpleVo类
     *
     * @param agentiaId
     * @return
     */
    AgentiaSimpleVo selectAgentiaSimpleVo(Long agentiaId);

    Page<AgentiaBmVo> lakuaiInfo(AgentiaSearchBmVo pageVo);
}